package actions;

import modelo.PalabraClave;
import modelo.Tesina;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import DAO.ComentarioDAO;
import DAO.FactoryDAO;
import DAO.PalabraClaveDAO;
import DAO.TesinaDAO;

import com.opensymphony.xwork2.ActionSupport;

@Action(value = "/edit-grid-entry2")
@Results({
		@Result(location = "/jsp/principal/backend.jsp", name = "success"),
		@Result(location = "/jsp/principal/backend.jsp", name = "input") })
public class EditGridEntry2 extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private TesinaDAO tesinaDAO = FactoryDAO.getTesinaDAO();
	private static final Log log = LogFactory.getLog(EditGridEntry2.class);
	private String oper = "edit";
	private String id;
	private String titulo;
	private String autor;
	private String director;
	private String carrera;
	private String resumen;
	private String concluciones;
	private String trabajosFuturos;
	private String trabajosRealizados;
	private String fechaPresentacion;
	private String palabrasClaves;

	public String execute() throws Exception {
		Tesina tesina;
		if (oper.equalsIgnoreCase("add")) {
			EditGridEntry2.log.debug("Add Customer");
			tesina = tesinaDAO.crearTesis(titulo, autor, director, carrera,
					resumen, concluciones, trabajosFuturos, trabajosRealizados,
					fechaPresentacion, palabrasClaves);

			tesinaDAO.guardar(tesina);
			this.agregarPalabrasClaves(tesinaDAO.obtenerEstaTesis());
			return INPUT;

		} else if (oper.equalsIgnoreCase("edit")) {
			tesina = tesinaDAO.crearTesis(titulo, autor, director, carrera,
					resumen, concluciones, trabajosFuturos, trabajosRealizados,
					fechaPresentacion, palabrasClaves);
			tesina.setId(new Long(id));
			TesinaDAO tesinaDAO = FactoryDAO.getTesinaDAO();
			tesinaDAO.modificarTesina(tesina);

		} else if (oper.equalsIgnoreCase("del")) {
			ComentarioDAO comentarioDAO = FactoryDAO.getComentarioDAO();
			comentarioDAO.eliminarComentariosPorTesis(new Long(id));
			TesinaDAO tesinaDAO = FactoryDAO.getTesinaDAO();
			tesinaDAO.eliminarTesis(new Long(id));

		}
		return SUCCESS;
	}

	private void agregarPalabrasClaves(Tesina tesina) {
		// TODO Auto-generated method stub

		PalabraClaveDAO pDAO = FactoryDAO.getPalabraClaveDAO();
		String palabras = getPalabrasClaves();
		for (int i = 0; i < palabras.split(",").length; i++) {
			PalabraClave palabraClave = new PalabraClave();
			palabraClave.setPalabra(palabras.split(",")[i]);
			palabraClave.setTesina(tesina);
			pDAO.agregarPalabraClave(palabraClave);
		}

	}

	public void validate() {
		if (oper.equalsIgnoreCase("edit")) {
			if (getAutor().equals("") || getCarrera().equals("")
					|| getConcluciones().equals("") || getDirector().equals("")
					|| getFechaPresentacion().equals("")
					|| getResumen().equals("") || getTitulo().equals("")
					|| getTrabajosRealizados().equals("")) {

				addFieldError("error", getText("global.composRequeridosVacio"));
			}

			if (!(this.validarPalabraClave())) {
				addFieldError("clave", getText("global.formatoError"));
			}
		}
	}

	private boolean validarPalabraClave() {
		// TODO Auto-generated method stub

		String palabras = getPalabrasClaves();
		if (palabras.split(",").length == 0) {
			return false;
		}
		return true;

	}

	public TesinaDAO getTesinaDAO() {
		return tesinaDAO;
	}

	public void setTesinaDAO(TesinaDAO tesinaDAO) {
		this.tesinaDAO = tesinaDAO;
	}

	public String getOper() {
		return oper;
	}

	public void setOper(String oper) {
		this.oper = oper;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getAutor() {
		return autor;
	}

	public void setAutor(String autor) {
		this.autor = autor;
	}

	public String getDirector() {
		return director;
	}

	public void setDirector(String director) {
		this.director = director;
	}

	public String getCarrera() {
		return carrera;
	}

	public void setCarrera(String carrera) {
		this.carrera = carrera;
	}

	public String getResumen() {
		return resumen;
	}

	public void setResumen(String resumen) {
		this.resumen = resumen;
	}

	public String getConcluciones() {
		return concluciones;
	}

	public void setConcluciones(String concluciones) {
		this.concluciones = concluciones;
	}

	public String getTrabajosFuturos() {
		return trabajosFuturos;
	}

	public void setTrabajosFuturos(String trabajosFuturos) {
		this.trabajosFuturos = trabajosFuturos;
	}

	public String getTrabajosRealizados() {
		return trabajosRealizados;
	}

	public void setTrabajosRealizados(String trabajosRealizados) {
		this.trabajosRealizados = trabajosRealizados;
	}

	public String getFechaPresentacion() {
		return fechaPresentacion;
	}

	public void setFechaPresentacion(String fechaPresentacion) {
		this.fechaPresentacion = fechaPresentacion;
	}

	public String getPalabrasClaves() {
		return palabrasClaves;
	}

	public void setPalabrasClaves(String palabrasClaves) {
		this.palabrasClaves = palabrasClaves;
	}

}
